package com.wrupple.vegetate.domain;

import java.util.Collection;

import com.google.gwt.core.client.SingleJsoImpl;
import com.wrupple.vegetate.client.domain.JsCatalogDescriptor;

@SingleJsoImpl(value = JsCatalogDescriptor.class)
public interface CatalogDescriptor{
	

	/**
	 * @return The ID of the human-readable most descriptive field of this
	 *         catalog, by default it's the keyField, but this may not always be
	 *         the most intuitive field.
	 */
	public String getDescriptiveField();

	


	/**
	 * @return the keyField
	 */
	public String getKeyField();


	/**
	 * @return the id
	 */
	public String getId() ;

	

	/**
	 * @return the name
	 */
	public String getName() ;

	

	/**
	 * @return the clazz
	 */
	public String getClazz() ;



	/**
	 * @param id
	 *            the Machine Readable id for the field
	 * @return
	 */
	public FieldDescriptor getFieldDescriptor(String id);

	/**
	 * @return a set of all the ids of all fields
	 */
	public Collection<String> getFieldNames();
	
	public Collection<FieldDescriptor> getFields();
	

}
